package com.zxy.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;

import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import java.util.Set;

@WebServlet("/servlet5")
public class servlet5 extends HttpServlet {
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//        接受请求中的参数
//        根据参数名获取单个参数  键值对形式
     String username=   req.getParameter("username");
        System.out.println(username);
        System.out.println(req.getParameter("userPwd"));
        //    根据参数名获取多个参数值
        String[] hobbies = req.getParameterValues("body");
        System.out.println(Arrays.toString(hobbies));
//        获取所有的参数名
        Enumeration<String> pnames = req.getParameterNames();
        while (pnames.hasMoreElements()){
            String pname = pnames.nextElement();
            String[] values = req.getParameterValues(pname);
            if(values.length>1){
                System.out.println(pname+"="+Arrays.toString(values));
            }else {
                System.out.println(pname+"="+values[0]);
            }
        }
//        返回所有参数map的集合
        Map<String, String[]> parameterMap = req.getParameterMap();
        Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet();
        for(Map.Entry<String, String[]> entry : entries) {
            String pname = entry.getKey();
            String[] value = entry.getValue();
            if(value.length>1){
                System.out.println(pname+"="+Arrays.toString(value));
            }else {
                System.out.println(pname+"="+value[0]);
            }
        }
/**
 *  以上API专门用于获取key=value形式的参数，无论这些参数是在url后还是在请求体中
 *
 *  请求
 *     GET方式参数也是可以放在请求体。只是form表单不把参数放在请求体里
 *
 *  form 表单标签提交GET请求时，参数以键值对形式放在URL后，不放在请求体力，GET方式的请求也是可以有请求体
 *  获取请求体中非键值对数据？ 如json串 文件
 *  BufferedReaer reader = req.getReader();
 */


    }




}
